package com.itheima.wemedia.service;

import com.itheima.common.vo.PageResultVo;
import com.itheima.common.vo.ResultVo;
import com.itheima.wemedia.dto.WmNewsEnableDto;
import com.itheima.wemedia.pojo.WmNews;
import com.itheima.wemedia.dto.WmMaterialPageRequestDto;
import com.itheima.wemedia.dto.WmNewsDtoSave;
import com.baomidou.mybatisplus.extension.service.IService;
import com.itheima.wemedia.vo.WmNewsVo;

import java.util.List;

/**
 * @description <p>自媒体图文内容信息 业务接口</p>
 *
 * @version 1.0
 * @package com.itheima.wemedia.service
 */
public interface WmNewsService extends IService<WmNews> {

    /**
     * 文章添加业务
     * @param wmNewsDtoSave 接收前端传过来的参数
     * @param draft 判断时草稿还是提交审核确定状态
     * @return 返回是否添加成功的数据
     */
    Long addWmNews(WmNewsDtoSave wmNewsDtoSave, boolean draft);

    /**
     * 文章的分页查询
     * @param wmMaterialPageRequestDto 接收分页查询数据对象
     * @return 返回分页查询的结果
     */
    PageResultVo findPage(WmMaterialPageRequestDto wmMaterialPageRequestDto);

    /**
     * 根据id查询文章内容
     * @param wmNewsId 文章id
     * @return 返回文章对象
     */
    WmNews findById(Long wmNewsId);
    /**
     * 根据id删除文章
     * @param id 文章id
     */
    void delete(Long id);
    /**
     * 文章上下架业务功能
     * @param wmNewsEnableDto 接收前端传来的参数
     * @return 返回相应的更新结果
     */
    ResultVo updateEnable(WmNewsEnableDto wmNewsEnableDto);

    /**
     * 自媒体审核分页查询
     * @param wmNewsDtoSave 前端传过来的数据
     * @return 返回分页查询到的数据
     */
    PageResultVo findPageList(WmNewsDtoSave wmNewsDtoSave);

    /**
     * 人工审核通过业务
     * @param wmNewsDtoSave 接收前端传过来的参数
     * @return 返回是否驳回成功
     */
    boolean updateStatus(WmNewsDtoSave wmNewsDtoSave);
    /**
     * 人工审核驳回业务
     * @param wmNewsDtoSave 接收前端传过来的参数
     * @return 返回是否驳回成功
     */
    boolean updateStatusFail(WmNewsDtoSave wmNewsDtoSave);

    /**
     * 远程调用查询状态为审核通过和定时发布时间小于当前时间的文章
     * @param wmNewsDtoSave 接收条件数据
     * @return 返回查询到数据封装集合
     */
    List<WmNewsVo> getList(WmNewsDtoSave wmNewsDtoSave);

    /**
     * 文章发布成功，更新文章状态和文章库的文章id
     * @param wmNews 自媒体文章对象
     * @return 返回是否更新成功
     */
    boolean updateWmNews(WmNews wmNews);
}
